<?php
include_once('relatorios'.bar.'relatorios.php');
class vendas_contasgeradas extends relatorios {

    function vendas_contasgeradas (){
	
		parent::__construct();
		
		$this->hbox_data->show_all();
		$this->hbox_button->show_all();
		
		$this->label_combo1->show();
		$this->label_combo1->set_text("Ordenar por ");
		
		$this->orderby["s.codsaidas"]="Codigo da Venda";
		$this->orderby["m.data"]="Data de Vencimento";
		$this->orderby["c.nome"]="Nome do cliente";
		$this->orderby["m.valor"]="Valor";	
		
		$this->combo1->show();
		// coloca arrays na combobox 
		foreach ($this->orderby as $tmp){
			$this->combo1->append_text($tmp);
		}
		// bota o primeiro como escolha atual 
		$this->combo1->set_active(0);
		
		$this->button_html->connect_simple('clicked',array($this, 'gerar'),'html');
		$this->button_texto->connect_simple('clicked',array($this, 'gerar'),'texto');
		$this->button_tela->connect_simple('clicked',array($this, 'gerar'),'tela');
	}
	
	function gerar($tipo){
		if(!$this->valida_data($this->entry_data1->get_text())){
            msg('Data Inicial Invalida');
            return false;
        }
        $this->data1=$this->corrigeNumero($this->entry_data1->get_text(),"dataiso");
        
        if(!$this->valida_data($this->entry_data2->get_text())){
            msg('Data Final Invalida');
            return false;
        }
        $this->data2=$this->corrigeNumero($this->entry_data2->get_text(),"dataiso");
		$con=$this->conecta();
		
		$sql="SELECT m.codorigem AS codvenda, c.nome, s.data, m.data, m.valor, fp.descricao AS formapgto, mp.descricao AS meiopgto FROM movpagamentos AS m INNER JOIN formapgto AS fp ON (fp.codigoformapgto=m.codformapgto) INNER JOIN meiopgto AS mp ON (mp.codigo=m.codmeiopgto) INNER JOIN saidas AS s ON (s.codsaidas=m.codorigem) INNER JOIN clientes AS c ON (s.codcli=c.codigo) WHERE m.valor>0 AND m.tipo='S' AND s.data>='$this->data1' AND s.data<='$this->data2' ";

		// pega qual a escolha da combobox de orderby
		$order=$this->combo1->get_active_text();
		// pega o nome do campo da array criada na funcao anterior
		$key=array_search($order, $this->orderby);
		
		$sql.=" ORDER BY ".$key;

		
    	if(!$resultado=$con->Query($sql)){
			msg("Erro ao executar comando SQL");
			return;
		}
		
		$numerolin=$con->NumRows($resultado);
		if($numerolin==0){
			msg("Sua consulta nao retornou nenhum resultado!");
			return;
		}
    	
		$titulo="Relatorio de Contas Geradas por Vendas";
		$cabeca[0]="Periodo: ".$this->entry_data1->get_text()." a ".$this->entry_data2->get_text();
		
		$cabtabela[0]="Cod.Venda";
		$cabtabela[1]="Nome Cliente";
		$cabtabela[2]="Dt.Venda";
		$cabtabela[3]="Dt.Venc.";
		$cabtabela[4]="Valor";
		$cabtabela[5]="Forma.Pgto";
		$cabtabela[6]="Meio.Pgto";
		
		$j=0;
		while($i = $con->FetchRow($resultado)) {
            $corpo[$j][0]=$i[0];
            $corpo[$j][1]=$i[1];
            $corpo[$j][2]=$this->corrigeNumero($i[2],'data');
            $corpo[$j][3]=$this->corrigeNumero($i[3],'data');
            $corpo[$j][4]=$this->corrigeNumero($i[4],'virgula');
            $corpo[$j][5]=$i[5];
            $corpo[$j][6]=$i[6];
            // soma total
            $soma+=$i[4];
            // controla linha
            $j++;
        }
        // soma resultado agrupado por forma de pagamento
        $sql="SELECT sum(m.valor), m.codformapgto, fp.descricao FROM movpagamentos AS m INNER JOIN formapgto AS fp ON (fp.codigoformapgto=m.codformapgto) INNER JOIN saidas AS s ON (s.codsaidas=m.codorigem) WHERE m.tipo='S' AND s.data>='$this->data1' AND s.data<='$this->data2' GROUP BY m.codformapgto,fp.descricao ORDER BY fp.descricao";
        
        $resultado=$con->Query($sql);
        
        $pe[0]="Total geral: ".$this->corrigeNumero($soma,'virgula');
        $pe[1]="Total agrupado por forma de pagamento";
        
        $j=2;
		while($i = $con->FetchRow($resultado)) {
            $pe[$j]=$i[2].' = R$ '; // descricao forma pgto
            $pe[$j].=$this->corrigeNumero($i[0],'virgula'); // total

            // controla linha
            $j++;
        }
        


		if($tipo=="html"){
			$this->geraHTML($titulo, $cabeca, $cabtabela, $corpo, $pe, true);
		}elseif($tipo=="texto"){
			$this->geraTEXTO($titulo, $cabeca, $cabtabela, $corpo, $pe, true);
		}elseif($tipo=="tela"){
			$this->geraTELA($titulo, $cabeca, $cabtabela, $corpo, $pe, true);
		}
        $this->disconecta($this->con);
		
		msg("Relatorio gerado com sucesso!");
	}
}

?>